<?php

namespace app\index\controller;

class Utils
{
    /**
     * 生成zip文件
     */
    public function zipFile()
    {
        // 此处不要加/斜杠，否则报错
        $file1 = 'storage/p2621592672.jpg';
        $file2 = 'storage/p2623352215.jpg';
        $file3 = 'storage/p2625120378.jpg';
        $dest_file =  'storage/myzipfile.zip';
        $files = array($file1, $file2, $file3);
        create_zip($files, $dest_file, false);
    }

    /**
     * zip解压缩文件
     */
    public function toZip()
    {
        // 使用函数
        $zipFilePath = 'storage/myzipfile.zip'; // ZIP文件路径
        $destination = 'storage/file/'; // 解压缩到的目录路径
        $b = extract_zip($zipFilePath, $destination);
        dump($b);
    }

    /**
     * 生成普通二维码
     */
    public function getQrcode($url='')
    {
        $url = 'http://www.baidu.com';
        $value = $url;                    //二维码内容

        $errorCorrectionLevel = 'L';    //容错级别 
        $matrixPointSize = 6;            //生成图片大小  

        $time_dir = date("Ymd");
        //生成二维码图片，此处storage前不加/斜杠
        $dir = "storage/qrcode/" . $time_dir;
        //生成二维码图片
        if (!file_exists($dir)) {
            //如果不创建，递归创建
            mkdir($dir, 0777, true);
        }
        $filename = $dir . "/" . date("YmdHis") . mt_rand(1000, 9999) . ".png";

        \phpqrcode\QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

        $QR = $filename; //已经生成的原始二维码图片文件  

        $QR = imagecreatefromstring(file_get_contents($QR));

        //输出图片  
        imagepng($QR, 'qrcode.png');
        imagedestroy($QR);
        // 此处加/斜杠
        return '<img src="/' . $filename . '" alt="扫描二维码识别">';
    }

    /**
     * 在生成的二维码中加上logo(生成图片文件),本例未实现 //TODO
     */
    public function getLogoQrcode($url = '')
    {
        $url = 'http://www.baidu.com';
        $value = $url;                    //二维码内容  
        $errorCorrectionLevel = 'H';    //容错级别  
        $matrixPointSize = 6;            //生成图片大小  
        //生成二维码图片
        $filename = 'storage/qrcode/' . md5(microtime()) . '.png';
        \phpqrcode\QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

        $logo = 'storage/qrcode/logo.jpg';     //准备好的logo图片   
        $QR = $filename;            //已经生成的原始二维码图  

        if (file_exists($logo)) {
            $QR = imagecreatefromstring(file_get_contents($QR));           //目标图象连接资源。
            $logo = imagecreatefromstring(file_get_contents($logo));       //源图象连接资源。
            $QR_width = imagesx($QR);            //二维码图片宽度   
            $QR_height = imagesy($QR);            //二维码图片高度   
            $logo_width = imagesx($logo);        //logo图片宽度   
            $logo_height = imagesy($logo);        //logo图片高度   
            $logo_qr_width = $QR_width / 5;       //组合之后logo的宽度(占二维码的1/5)
            $scale = $logo_width / $logo_qr_width;       //logo的宽度缩放比(本身宽度/组合后的宽度)
            $logo_qr_height = $logo_height / $scale;  //组合之后logo的高度
            $from_width = ($QR_width - $logo_qr_width) / 2;   //组合之后logo左上角所在坐标点

            //重新组合图片并调整大小
            /*
		 *	imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
		 */
            imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        }

        //输出图片  
        // imagepng($QR, 'qrcode.png');
        // imagedestroy($QR);
        // imagedestroy($logo);
        // return '<img src="/' . $filename . '" alt="使用微信扫描">';
    }

    /**
     * @param
     * @return 
     */
    public function getSign()
    {
        $params = [
            "app_id"=> "aabbcc",
            "cp_extend_info"=> "",
            "format"=> "json",
            "sign_type"=> "HMAC-SHA1",
            "timestamp"=> microtime()
        ];

        $sign = hmac_sha1_sign($params,'abcdefg');
        echo $sign;
    }
}
